package database;

import java.sql.*;

/**
 *Essa classe e responsavel por fazer a comunicacao com o banco de dados, ela fornece 
 *metodos para conectar com o banco consultar, e atualizar os seus dados
 */
public class Database {

	/*
	 * Os atributos sao static, pois so e necessario uma conexao com o banco
	 */
	private static Connection conexao;
	
	
	/**
	 * Esse construtor faz uma conexao com o banco, ele deve ser chamada pelas classes
	 * q precisam acessar o banco de dados
	 * 
	 */
	public Database(String host, String porta, String banco, String usuario, String senha) 
	{

		try {

			/*
			 * Registra o driver do PostgreSQL
			 */
			Class.forName("org.postgresql.Driver");

			/*
			 * Estabelece a conexao
			 */
			conexao = DriverManager.getConnection("jdbc:postgresql://" + host + ":" + porta +
					"/" + banco, usuario, senha);

		} catch (ClassNotFoundException e) {
			
			e.printStackTrace();
			
			/*
			 * relanca a excecao
			 */
			throw new RuntimeException();
			
		} catch (SQLException e) {
			
			e.printStackTrace();
			
			throw new RuntimeException();
			
		}
		
	}
	
	/**
	 * Esse metodo serve para pegar a conexao com o banco de dados
	 * 
	 * @return uma conexao com o banco de dados
	 */
	public static Connection getConexao(){
		
		return conexao;
		
	}
		
	/**
	 * Fecha a conexao com o banco de dados
	 */
	public static void fechaConexao(){
			
		try {
			
			conexao.close();
			
		} catch (SQLException e) {
			
			e.printStackTrace();
			
		}
	}
	
	
}//public class Database
